home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 359_10 / patch4.001 / DOCS / README < prev    next >
Encoding:
Text File  |  1991-07-21  |  24.4 KB  |  601 lines

  1.  
  2. This is the README file for DJ's GCC port to DOS.
  3.  
  4. Contents:
  5.     * Overview
  6.     * What's available
  7.     * How to install
  8.     * Common questions
  9.     * Deviations and Caveats
  10.     * Copyright information
  11.  
  12. Disclaimer: This software is distributed WITHOUT ANY WARRANTY; without
  13. even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  14. PURPOSE.
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. Overview:
  22.  
  23. This package contains a 32-bit 80386 DOS extender with symbolic
  24. debugger, a C/C++ compiler with utilities, development libraries, and
  25. source code.  It generates full 32-bit programs and supports full
  26. virtual memory with paging to disk. 
  27.  
  28. Requirements:
  29.  
  30. A 80386-based IBM compatible PC or PS/2 is required.  The 80387 emulator
  31. currently does not emulate trancendental functions (exp, sin, etc). 
  32. Approximately 4-5Mb of hard drive space is required.  640K RAM is
  33. required. 
  34.  
  35. Supported Wares:
  36.  
  37. * Up to 128M of extended (not expanded) memory
  38. * Up to 128M of disk space used for swapping
  39. * SuperVGA 256-color mode up to 1024x768
  40. * 80387
  41. * XMS & VDISK memory allocation strategies
  42.  
  43. Unsupported:
  44.  
  45. * V86 programs, like QEMM, 386MAX, DesqView, Windows/386, etc.
  46.  
  47.  
  48.  
  49.  
  50.  
  51. File location:
  52.  
  53.     host:      grape.ecs.clarkson.edu
  54.     login:     ftp
  55.     password:  send your e-mail address
  56.     directory: ~ftp/pub/msdos/djgcc
  57.  
  58. NOTE: In accordance with FSF CopyLeft, you are not allowed to upload
  59. this program to a distribution site unless that site also makes the FSF
  60. sources for these programs available.  Please read the file COPYING for
  61. more details.  FSF sources are available on prep.ai.mit.edu, and on
  62. either grape.ecs.clarkson.edu or sun.soe.clarkson.edu
  63.  
  64. NOTE: If your application links in object modules that were written
  65. by FSF, your application counts as a "derived work" and must obey
  66. the provisions of the FSF Copyrights.  See the file COPYING for
  67. details.  Specifically, the C++ classes in libc.a and obstacks are
  68. FSF works that are covered by the GNU GPL.  The mere act of compiling
  69. does not affect the copyright status of your program.
  70.  
  71.  
  72. File formats:
  73.  
  74.     .ZIP format - djgpp.zip - one 2.2M file, contains everything.
  75.  
  76.     split .ZIP - djgppzip.000 through djgppzip.065 (or so), each
  77.                  32K.  Use the merge program to merge them into 
  78.                  djgpp.zip ("merge djgppzip djgpp.zip").
  79.  
  80.     other - readme, merge.c/.exe, split.c/.exe are separately available
  81.  
  82.  
  83.  
  84. Directories:
  85.  
  86.     bin          all binaries (cpp, cc1, extender, etc)
  87.     lib          all libraries (crt0.*, libc.a, libgr.a, libpc.a)
  88.     include      all include files (arc'd tar file)
  89.     docs         all documents (including this one)
  90.     go32         sources for the extender
  91.     drivers      various SuperVGA drivers
  92.     libsrc       sources for the libraries (arc'd tar file)
  93.     diffs        diffs from FSF distributions to dos-compilable
  94.     utils        sources for the utilities
  95.     samples      sample C++ sources using graphics & mouse
  96.     emu387       80387 emulator for non-80387 systems (currently TEST version)
  97.  
  98.  
  99. bin:
  100.     bison.exe    lalr(1) parser
  101.     flex.exe     lexical parser
  102.     cpp.exe      C and C++ preprocessor
  103.     cc1.exe      C compiler
  104.     cc1plus.exe  C++ compiler
  105.     as.exe       80386/80387 assembler
  106.     ld.exe       a.out (BSD) format linker
  107.     ar.exe       archive utility
  108.     nm.exe       name list utility
  109.     size.exe     a.out section size utility
  110.     strip.exe    symbol stripper
  111.     objdump.exe  display info from .o file
  112.     gcc.exe      compilation coordinator
  113.     go32.exe     basic 32-bit DOS extender
  114.     debug32.exe  32-bit DOS extender with symbolic debugger
  115.     stub.exe     stub to prepend on aout files to make .exe files
  116.     aout2exe.bat turns aout file to .exe by prepending stub.exe
  117.     diff.exe     creates diffs, including context diffs
  118.     patch.exe    patches source from diffs, including context diffs
  119.     djtarx.exe   tar extractor for FSF tarfiles if you don't have a tar
  120.     utod.exe     convert Unix text files to DOS text files
  121.     dtou.exe     convert DOS text files to Unix text files
  122.     split.exe    split big binaries into many little binaries
  123.     merge.exe    merge many little binaries back into one big binary
  124.  
  125. lib:
  126.  
  127.     libc.a       all standard routines (BSD style), and C++ methods & support
  128.     libm.a       math routines
  129.     libgr.a      graphics routines and mouse support
  130.     libpc.a      routines for PC support (in/out, getkey, kbhit, screen utils)
  131.     crt0.s       C runtime source
  132.     crt0.o       C runtime object
  133.     bison.simple bison support
  134.     bison.hairy  bison support
  135.     flex.skel    flex support file
  136.     libflex.a    flex support library
  137.  
  138. include:
  139.  
  140.     Most BSD-style and SYSV-style include files.  These mostly came from
  141.     the G++ sources.
  142.     sys/*.h      MS-DOS specific
  143.     graphics.h   for libgr.a
  144.     pc.h         for libpc.a
  145.     mouse.h      for mouse routines in libgr.a
  146.  
  147. docs:
  148.  
  149.     readme       this document
  150.     copying      GNU General Public License
  151.     copying.dj   Copyright information for items (C) DJ Delorie
  152.     debug32.doc  instructions for the symbolic debugger
  153.     internal.doc information about how the extender works
  154.     libc.a       differences and enhancements
  155.     libm.a       list of implemented functions
  156.     libpc.a      documentation
  157.     libgr.a      documentation
  158.  
  159. go32:
  160.  
  161.     sources for the extender.  Requires Turbo C and Turbo Assembler
  162.  
  163. drivers:
  164.  
  165.     VGA and SuperVGA drivers - source and binary.  Use the GO32 environment
  166.     variable to select and configure one of these according to the VGA card
  167.     you have.
  168.  
  169. libsrc:
  170.  
  171.     Sources for the libraries.  These are compiled with gcc.  The makefile
  172.     is set up for NDMAKE.  The source files came from three sources:
  173.     
  174.         (1) Me.  Mostly the system call routines, and some string routines.
  175.             All of libpc.a, libgr.a, libm.a .
  176.         (2) FSF.  These are the GCC support routines, C++ support, and
  177.             other routines that came with gcc (malloc, obstack, alloca, etc)
  178.         (3) BSD.  These are mostly the stdio and stdlib routines, and
  179.             the rest of the string routines.  BSD requires that I mention
  180.             that their sources are copyright BSD and that I have modified
  181.             some to comply with the include files provided by FSF.  These
  182.             sources are the "freed files" everyone keeps talking about.
  183.  
  184. diffs:
  185.  
  186.     Context diffs from the original FSF sources to the GNUDOS sources.  See
  187.     the README and VERSIONS files in that directory for more info.
  188.  
  189. utils:
  190.  
  191.     Sources for djtarx, utod, dtou, split, and merge.
  192.  
  193. samples:
  194.  
  195.     Various samples showing how to use the mouse, graphics, C++, setjmp(),
  196.     etc.
  197.  
  198. emu387:
  199.  
  200.     80387 emulator and source code.  Currently, this is a TEST version, as
  201.     I'm not done with it yet.  Trig, log, exp functions are missing, for
  202.     starters.  I don't expect this to work perfectly, but should cover
  203.     most normal floating point math.  To use, add "emu /djgcc/emu387/emu387"
  204.     to the GO32 environment variable. (ie: set GO32=emu /djgcc/emu387/emu387)
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213. INSTALLING:
  214.  
  215. To install, you must do the following:
  216.  
  217. * Create a directory to install in, like c:\djgpp.
  218.  
  219. * Create a "temp" directory, like c:\tmp.
  220.  
  221. * Un-zip djgpp.zip in that directory.
  222.     C:\DJGPP> pkunzip -d djgpp.zip
  223.  
  224. * Add the following lines to C:\AUTOEXEC.BAT:
  225.     set gccbin=c:/djgpp/bin
  226.     set gccinc=c:/djgpp/include
  227.     set gcclib=c:/djgpp/lib
  228.     set gcctmp=c:/tmp
  229.     set go32tmp=c:/tmp
  230.     set go32=ansi driver c:/djgpp/drivers/SOMETHING.grd gw 1024 gh 768
  231.                          ^^^ whatever driver works with your VGA (optional)
  232.     set bison_simple=c:/djgpp/lib/bison.simple
  233.     set bison_hairy=c:/djgpp/lib/bison.hairy
  234.     set flex_skeleton=c:/djgpp/lib/flex.skeleton
  235.  
  236.   TMP and TEMP are checked if GCCTMP isn't set
  237.   GO32TMP is where go32 puts its paging file (GCCTMP, TMP, TEMP are checked,
  238.   in that order, also)
  239.  
  240.   Remember that unless you manually type these at the command line,
  241.   they won't take effect until you reboot.  Don't include the "ansi"
  242.   keyword in the "go32" variable if you don't have an ANSI.SYS driver
  243.   or equivalent.
  244.  
  245. * Add your binaries directory to your PATH in C:\AUTOEXEC.BAT
  246.     SET PATH= . . . ;C:\DJGPP\BIN
  247.  
  248. That's it! G++ is now installed on your system.
  249.  
  250.  
  251.  
  252.  
  253.  
  254. The GO32 environment variable:
  255.  
  256.  
  257. This variable controls the options available in go32 or debug32.  The
  258. syntax of this variable is:
  259.  
  260.   SET GO32=[parm [value]] [parm [value]] . . .
  261.  
  262. Parameters:
  263.  
  264.   ansi           Use ANSI commands to control the color in debug32
  265.   mono           Use the Monochrome monitor for debugging - useful when
  266.                    debugging graphics applications
  267.   1rm            Redirect stdout (file #1) to the monochrome monitor
  268.   2rm            Redirect stderr (file #2) to the monochrome monitor
  269.   1r2            Redirect stdout (file #1) to stderr (file #2)
  270.   2r1            Redirect stderr (file #2) to stdout (file #1)
  271.  
  272.   emu [path]     Use the specified file as the 80387 emulator
  273.  
  274.   driver [path]  Use the specified file as the graphics driver
  275.   gw [width]     Default graphics width
  276.   gh [height]    Default graphics height
  277.   tw [width]     Default text width
  278.   th [height]    Default text height
  279.  
  280.  
  281. These parameters may occur in any order.
  282.  
  283. Note that "1rm" and "2rm" are done before "1r2" and "2r1", so "1rm 2r1" sends
  284. stdout to the mono monitor and stderr to any redirection used.
  285.  
  286. Examples:
  287.  
  288.   C:\> set go32=mono driver c:\djgpp\drivers\tseng4k.grd gw 1024 gh 768 tw 132 th 43
  289.   C:\> set go32=ansi
  290.   C:\> set go32=driver c:\djgpp\drivers\tseng4k.grd ansi
  291.   C:\> set go32=mono 1rm 2rm
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299. Common Questions:
  300.  
  301. Q: When I run "gcc e:\proj\prog.c" it says "undefined escape sequence \p"?
  302. A: Gcc is a *unix* compiler - you must use *unix* slashes (e:/proj/prog.c).
  303.    Environment variables (like GCCINC) may, however, use either, as they
  304.    are converted.
  305.  
  306. Q: I type "GCC PROG.C" and ld complains about PROG.C not being an object.
  307. Q: I type "gcc prog.cxx" to compile a C++ program, and ld complains.
  308. A: Gcc is *not* case insensitive like DOS is, and it uses the file's
  309.    extension to determine how to compile a file.  Valid extensions are:
  310.      .cc = C++ source (passed through cpp)
  311.      .c = C source that must be passed through cpp first
  312.      .i = raw C source (no cpp pass)
  313.      .S = assembler that must be passed through cpp first
  314.      .s = raw assembler source (no cpp pass)
  315.    any other file is passed to the linker
  316.  
  317. Q: I compile my program, but can't run the output file.
  318. A: DOS doesn't know how to run unix-style a.out files.  That's what the
  319.    extender is for.  To run an a.out file called myprog, type
  320.      "go32 myprog . . ."
  321.  
  322. Q: Gcc doesn't recognize // as a comment in my C programs.
  323. A: That's because // isn't a comment in C.  If you want to compile C++,
  324.    then write C++ programs.  Gcc is really two compilers in one, not
  325.    one compiler that compiles both C and C++.  That's why you get
  326.    cc1 and cc1plus.
  327.  
  328. Q: I'm reading in data files, but the data gets corrupted.
  329. A: The default file type is DOS text, even for read() and write().  You must
  330.    tell the system that a file is binary through the "b" flag in fopen(),
  331.    or O_BINARY in open().
  332.  
  333. Q: I get "fatal signal 2" when I run gcc.
  334. A: When gcc reports a "signal", it really means that an error occurred
  335.    trying to run the given program.  The "signal" number is the DOS error
  336.    code, and 2 means "file not found".  Check the GCCBIN environment
  337.    variable and make sure it points to the directory with cpp.exe,
  338.    cc1.exe, etc.
  339.  
  340. Q: The binaries I get with the distribution are .exe files, but gcc creates
  341.    a.out files.  I rename the a.out's to .EXE's, but they still don't work.
  342. A: To get an .EXE from an a.out, you must *prepend* either go32.exe,
  343.    debug32.exe, or stub.exe to the file:
  344.      copy /b stub.exe+myprog myprog.exe
  345.  
  346. Q: What is stub.exe?
  347. A: Stub.exe simply calles go32.exe, and passes it information it needs to
  348.    run the a.out file attached to it.  Stub is much smaller than go32, so
  349.    less disk space is used.  Also, if you change go32, you don't have to
  350.    change stub, and all the stub-ized programs will use the new go32
  351.    automatically.
  352.  
  353. Q: I want to change cc1.  How do I do this?
  354. A: First, get the GNU sources from FSF.  They're usually available at
  355.    prep.ai.mit.edu in /u/emacs, if not elsewhere.  Use djtarx to un-tar
  356.    them, as djtarx knows how to handle unix file names that aren't valid
  357.    DOS file names.  Look in the "diffs" sources to see what to change the
  358.    names to when they conflict.  Next, apply the "diffs" over the
  359.    GNU sources (making sure you have the right version of GNU - see the
  360.    versions file).  For the gcc-1.39 sources, you must run utod (or some
  361.    other unix-to-dos converter) to compile gcc.exe, then run config-d.bat,
  362.    then run makeall.bat.  For gpp-1.39, copy the g++ sources over the
  363.    completed gcc sources, apply the gpp diffs, then run makeall.bat (gpp's
  364.    now).  For all other programs, just run make.  Note that the makefiles
  365.    are tuned for ndmake, since it knows how to make response files.
  366.  
  367. Q: I don't have an 80387.  How do I compile floating point programs?
  368. A: Add "emu c:\djgpp\emu387\emu387" to the GO32 environment variable
  369.    (see go32 section above).  This tells go32 to use the given file
  370.    as an 80387 emulator.  This emulator does not support trancendental
  371.    functions like exp or sin yet, but it works well enough for compiles
  372.    and standard +-*/ functions, including sqrt().  If you don't load
  373.    this emulator, and you try to run floating point without a 387,
  374.    you will get an error.
  375.  
  376. Q: I installed an 80387 emulator in my AUTOEXEC, but it still doesn't
  377.    work.  Why?
  378. A: The CPU is running in *protected* mode, not real mode, and the information
  379.    needed to emulate the 80387 is different.  Not to mention that the
  380.    exceptions never get to the real-mode handler.  You must use the emu387
  381.    emulator, which is designed for go32.
  382.  
  383. Q: I can't run a.out programs under {QEMM,386MAX,Windows}.
  384. A: Nope, you can't.  These applications put the CPU into V86 mode, not
  385.    real mode, so go32 can't manage the real-protected interface
  386.    properly.  Go32 literally *takes over* the computer in order to
  387.    properly service the application it is running.
  388.  
  389. Q: Can I run this on my 286?  It has protected mode also...
  390. A: True, but the 286 isn't a 32-bit processor.  A 386 really is required.
  391.  
  392. Q: Can I use gcc on my 512K machine?
  393. A: Yes, but the disk better have at least 4Mb of free space for paging.
  394.    Go32 will use all available extended memory (up to 128M) and up to
  395.    128M of disk space, for a grand total of 256M of virtual memory for
  396.    your application.  Try a malloc(50*1024*1024) some day.
  397.  
  398. Q: Why do my compiles are running VERY SLOW, even though I use a ramdisk
  399.    for swap and a disk cache?
  400. A: Gcc requires at least 1Mb of virtual memory to run, usually close to 1.5M.
  401.    If there isn't this much real memory available, it starts paging to disk.
  402.    It's good to leave about 1M of extended (not expanded) memory available
  403.    for go32 to run programs with.  When it needs to page a lot, you spend
  404.    most of your time paging and little time actually running.
  405.  
  406. Q: How much memory is available when I use the system() call?
  407. A: Everything but what go32 is loaded with.  The program is completely
  408.    paged out to memory (including the page tables themselves) before
  409.    the second program is executed.
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416. Deviations and Caveats:
  417.  
  418. GCC/G++ deviates from the U**x version in a number of ways, mostly to
  419. accomodate deficiencies in the MS-DOS environment, and my own laziness.
  420.  
  421. * An 80387 is required to do floating point.  An emulator is provided,
  422.   but it does not support all the 80387 functions (it does +-*/ sqrt).
  423.   cc1 and cc1plus shouldn't use the 387 unless compiling floating point
  424.   code.  The environment variable "387" can override the auto-detection
  425.   routine:
  426.     SET 387=YES   to force 387 handlers to be enabled
  427.     SET 387=NO    to force 387 accesses to fault
  428.     SET 387=QUERY to get a message showing the results of the auto-detection
  429.   If no 80387 is present and the program attempts to use it, a message
  430.   indicating where the instruction is will be displayed.  To use the
  431.   387 emulator, add "emu c:\djgpp\emu387\emu387" to the GO32 environment
  432.   variable
  433.  
  434. * The VDISK method of allocating extended memory is supported.  The
  435.   INT 15h method is also.  When the extender runs out of conventional and
  436.   extended memory, it uses a paging file named $(GCCTMP)/pageXXXX.386, where
  437.   XXXX is an unspecified hex value.  This file is normally removed on exit.
  438.  
  439. * Up to 128 MB of physical memory and 128 MB of disk swap space are allowed.
  440.   A 512K machine is sufficient, but very slow due to paging.
  441.  
  442. * The utilies support the MS-DOS standard response file method for giving
  443.   more than 128 bytes of command line.  Example: "gcc -o foo @foo.lnk" where
  444.   foo.lnk contains a list of .o files.
  445.  
  446. * Since MS-DOS does not distinguish case in file names, some .h files
  447.   used for C++ have had underscores prepended to them to avoid conflict
  448.   (ie: String.h conflicts with string.h, so it became _String.h).
  449.  
  450. * When using ar to create archives, be warned that the ar version
  451.   supplied cannot update an archive that's been sequenced (ar s foo.a),
  452.   and cannot sequence a file that's been sequenced.  Also, ld cannot
  453.   use an archive that's not sequenced.  The following method is suggested:
  454.       ar rv mylib.a $(OBJS)
  455.       cp mylib.a mylib2.a
  456.       ar rvs mylib2.a
  457.       (and then link with mylib2.a)
  458.  
  459. * The extender can be added to any gcc-compiled program by copying go32.exe
  460.   to be <program>.exe, where <program> is the 32-bit program.  For example,
  461.   cc1plus is a gcc-compiled a.out file.  cc1plus.exe is a copy of go32.exe.
  462.   When the extender runs, it looks for a file of the same name but without
  463.   extension in the same directory, and executes it if present.  Otherwise,
  464.   the first parameter is the executable (ie: go32 cc1plus foo.cc).
  465.  
  466. * The extender can be merged to create one .exe file that is the extender
  467.   and the executable in one file, by using the stub.exe program:
  468.       copy /b stub.exe+myprog myprog.exe
  469.   This will only work if go32.exe is in your search path, because stub.exe
  470.   runs it.  Alternatively, you can prepend go32.exe itself to an a.out file
  471.   to get a single executable (stub.exe is much smaller).  Note that if
  472.   you re-compile go32 or stub, you must strip off the symbol table first. 
  473.  
  474. * The extender runs programs at logical address 0.  A copy of the first
  475.   1 MB of physical memory (including the AT channel) is mapped to
  476.   0xE0000000 in the program's address space.  The stack grows down from
  477.   0x7FFFFFFC in the program's address space.  Data usually starts at
  478.   0x00400000.
  479.  
  480. * The paging mechanism understands how SuperVGA's map their memory onto
  481.   the AT bus and automatically swaps pages as the program tries to
  482.   access them.  The program sees a linear range from 0xD0000000 to
  483.   0xD0100000 that corresponds to each pixel in the 256-color modes
  484.   of SuperVGAs.  To use this feature, you'll have to set the GO32
  485.   environment variable like this:
  486.     C>set go32=driver c:\djgpp\drivers\tseng4k.grd gw 640 gh 480 tw 132 th 43
  487.   These parameter pairs can be omitted or rearranged as needed.  They are
  488.   the "driver" name, default graphics width and height, and default
  489.   text width and height. Libgr.a doesn't have to be recompiled, nor
  490.   do graphics programs, when a different graphics mode is selected
  491.   (the extender handles it).  It is strongly recommended that the program
  492.   use the GR_default_graphics and GR_default_text modes to switch to
  493.   graphics or text.  These modes use the parameters specified by the
  494.   GO32 environment variable, allowing the user to select a favorite
  495.   graphics and text mode.
  496.  
  497. * Symbols are stored in virtual memory, so you won't run out of symbol
  498.   space until both extended memory and the disk are all used up.  For
  499.   large programs, you might notice a slight delay while it looks up
  500.   symbols.
  501.  
  502. * Signals are not reported to the program.  However, interrupts do continue
  503.   to get serviced while in protected mode (ie: keypress, timer, etc).
  504.   CTRL-C will get you back to the debugger in debug32, and you can continue
  505.   from where you stopped.  All signals (ie: exceptions) cause debugging
  506.   traps in debug32, or general faults in go32.
  507.  
  508.  
  509.  
  510. Copyright Information:
  511.  
  512. * Source code for the GNU utilities is copyright (c) Free Software Foundation.
  513.   For more information on the FSF copyright, see their source code or write
  514.   Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  515.   A copy of their file "COPYING" is included in doc.arc.  Some of the FSF
  516.   source code has been modified to operate properly in the MS-DOS environment.
  517.  
  518. * Source code for most of libc.a are copyright (c) Regents of the University
  519.   of California.  These files include copyright information in them.  The
  520.   utilities are compiled against these libraries, and thus contain software
  521.   developed by the University of California, Berkeley, and its contributors.
  522.   Some of the BSD source code has been modified to operate properly in the
  523.   MS-DOS environment.
  524.  
  525. * Any sources not falling under the copyrights of FSF or UCB (as above) are
  526.   Copyright (c) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954.
  527.   To contact me via E-Mail, sent to "dj@ctron.com".  Cabletron Systems Inc
  528.   is in no way involved with this project; I just happen to work for them
  529.   during the day.
  530.  
  531. Terms and Conditions:
  532.  
  533. * Source code copyright FSF is distributed under the terms of the GNU
  534.   Public General License.  See the file "COPYING" in doc.arc for more
  535.   information.  If your program links in object modules (in libc.a) that
  536.   are compiled from GNU sources, then your entire program must be
  537.   distributed under the terms of the GNU GPL as a "derived work".  These
  538.   modules are the C++ class library (including the streams classes) and
  539.   obstacks.  The sources in libsrc have the copyright notices in them
  540.   for the various modules.
  541.  
  542. * Source code copyright UCB is distributed under the terms listed in the
  543.   UCB source code itself.
  544.  
  545. * Source code copyright DJ Delorie is distributed under the terms of the
  546.   GNU General Public Licence, with the following exceptions:
  547.   (source code and executables copyright DJ Delorie are referred to as
  548.    "djcode" below)
  549.  
  550.   1 If the user of this software develops an application that requires
  551.     djcode to run, and that application is distributed under the terms
  552.     of the GNU General Public License (GPL), a binary executable of
  553.     djcode may be distributed with binary executables of the application,
  554.     and source files for djcode must be available with source files for
  555.     the application, under the terms of the GNU GPL.
  556.  
  557.   2 If the user of this software develops an application that requires
  558.     djcode to run, and that application is NOT distributed under the terms
  559.     of the GNU General Public License (GPL), a binary executable of
  560.     djcode may be distributed with binary executables of the application,
  561.     provided a royalty of 5% of the total sale price or $5 (whichever is
  562.     more) per copy sold is paid to DJ Delorie (at the address above).
  563.     Requests for exceptions may be made to DJ Delorie, but the granting of
  564.     an exception covers only the work excepted and does not apply to
  565.     other works, even if distributed under the same conditions.  Exceptions
  566.     will not be granted for any work sold for profit.
  567.  
  568.   3 A person or organization who develops software that requires djcode
  569.     but does not distribute that software under the terms of the GNU GPL
  570.     relinquishes all rights to obtain or redistribute the source code
  571.     for djcode, including any rights granted by the GNU General Public
  572.     License, and may only distribute executables of djcode under the
  573.     terms of exception 2, above.
  574.  
  575.   The intent of this copyright is this: If you make money by using the
  576.   programs I wrote, I get some of it.  If you use your sources to
  577.   teach others how to write programs, I'll support you.
  578.  
  579.   Changes to source code copyright BSD or FSF are copyright DJ Delorie, but
  580.   fall under the terms of the original copyright.
  581.  
  582.  
  583.  
  584.  
  585.  
  586. Donations may be made to any of the following:
  587.  
  588.     DJ Delorie
  589.     24 Kirsten Ave
  590.     Rochester, NH  03867-2954
  591.     USA
  592.  
  593.     Free Software Foundation
  594.     675 Mass Ave
  595.     Cambridge, MA 02139
  596.     USA
  597.  
  598.     University of California
  599.     Berkeley, CA  (sorry, I don't know their ZIP code)
  600.     USA
  601.